#ifndef wm_screen_h
#define wm_screen_h
/*
* Sylvain BERTRAND <digital.ragnarok@gmail.com>
 * code protected by GNU GPL v3
 */
#define DESKTOP_ALL (0xffffffff)
guint screen_num_desktops;
guint screen_num_monitors;
guint screen_desktop;
guint screen_last_desktop;
gboolean screen_showing_desktop;
Window screen_support_win;
Time screen_desktop_user_time;
struct wm_desktop_layout {
	enum wm_orientation orientation;
	enum wm_corner start_corner;
	guint rows;
	guint columns;
};
struct wm_desktop_layout screen_desktop_layout;
gchar **screen_desktop_names;
gboolean screen_annex(void);
void screen_startup(void);
void screen_shutdown(void);
void screen_resize(void);
void screen_set_desktop(guint num, gboolean dofocus);
void screen_add_desktop(gboolean current);
void screen_remove_desktop(gboolean current);
guint screen_find_desktop(guint from, enum wm_direction dir, gboolean wrap, gboolean linear);
void screen_show_desktop(gboolean show, struct wm_client *show_only);
void screen_install_colormap(struct wm_client *client, gboolean install);
void screen_update_areas(void);
const struct wm_rect *screen_physical_area_all_monitors(void);
const struct wm_rect *screen_physical_area_monitor(guint head);
const struct wm_rect *screen_physical_area_active(void);
guint screen_monitor_primary(gboolean fixed);
const struct wm_rect *screen_physical_area_primary(gboolean fixed);
#define SCREEN_AREA_ALL_MONITORS ((unsigned)-1)
#define SCREEN_AREA_ONE_MONITOR  ((unsigned)-2)
struct wm_rect *screen_area(guint desktop, guint head, struct wm_rect *search);
gboolean screen_physical_area_monitor_contains(guint head, struct wm_rect *search);
guint screen_find_monitor(const struct wm_rect *search);
gboolean screen_pointer_pos(gint *x, gint *y);
guint screen_monitor_pointer(void);
gboolean screen_compare_desktops(guint a, guint b);
#endif
